//package com.lsy.poi.row;
//
//import java.lang.reflect.InvocationTargetException;
//import java.util.Date;
//
//import org.apache.commons.beanutils.BeanUtils;
//import org.junit.Test;
//
//import com.lsy.poi.Student;
//
////import org.apache.commons.beanutils.BeanUtils;
////import org.apache.commons.beanutils.PropertyUtils;
//
//public class CopyOfRowMapper<T> {
////	private 
//	
//	private Class<T> clazz;
//	private String[] properties = {"id", "name", "address", "birthDay"};
//	
//	public CopyOfRowMapper(Class<T> clazz, String[] properties) {
//		super();
//		this.clazz = clazz;
//		this.properties = properties;
//	}
//	
//
//	public T mapRow(Object[] cellValues) throws InstantiationException, IllegalAccessException, InvocationTargetException {
//		T ele = clazz.newInstance();
//		
//		for(int i=0; i<properties.length; i++) {
//			
//			String property = properties[i];
//			Object cellValue = cellValues[i];
//			
//			BeanUtils.setProperty(ele, property, cellValue);
//		}
//
//
//		return ele;
////		for (String columnLabel : headers) {
////			//3.2、通过 列名，从  resultSet 中获取 列值
////			Object columnValue = resultSet.getObject(columnLabel);
////			//System.out.println(columnLabel + ": " + columnValue);
////			
////			//3.3、通过 反射，为 javaBean 对象设置属性值
////			//ReflectionUtils.setFieldValue(ele, columnLabel, columnValue);
////			BeanUtils.setProperty(ele, columnLabel, columnValue);
////		}
//		
////		eleList.add(ele);
////		
////		return null;
//	}
//	
//	@Test
//	public void foo() throws InstantiationException, IllegalAccessException, InvocationTargetException {
//		Class<Student> clazz = Student.class;
//		
//		Student ele = clazz.newInstance();
//		
//		Object[] cellValues = {33, "张三", "上海", new Date()};
//		
//		String[] properties = {"id", "name", "address", "birthDay"};
//		
//		
////		Map<String, Object> m1 = new HashMap<String, Object>();
////		m1.put("aaa", 123);
////		m1.put("bbb", 456);
////		m1.put("ccc", 789);
////		System.out.println(m1);
//		
//		for(int i=0; i<properties.length; i++) {
//			
//			String property = properties[i];
//			Object cellValue = cellValues[i];
//			
//			BeanUtils.setProperty(ele, property, cellValue);
//		}
//		
//		System.out.println(ele);
////		
////		
////		for (String columnLabel : headers) {
////			//3.2、通过 列名，从  resultSet 中获取 列值
////			Object columnValue = resultSet.getObject(columnLabel);
////			//System.out.println(columnLabel + ": " + columnValue);
////			
////			//3.3、通过 反射，为 javaBean 对象设置属性值
////			//ReflectionUtils.setFieldValue(ele, columnLabel, columnValue);
////			BeanUtils.setProperty(ele, columnLabel, columnValue);
////		}
////		
////		eleList.add(ele);
//	}
//	/**
//	 * rowMapper 
//	 * 参数1:Object[] cellValues 的 下标
//	 * 参数2:实体类的 属性值，使用 BeanProperties 工具进行处理
//	 * 参数3:实体类（是一个 集合）  Class<T> clazz
//	 * 
//	 * 
//	 * 默认的 方式就是：通过 BeanProperties 把 属性值 设置到 实体类上
//	 * 也可以 补充这个 方法，补充方法的 第一行 可以 super.默认方法()
//	 * 
//	 * Object obj = PropertyUtils.getProperty(content, propertyName);
//	 * 
//	 * 
//	 * public static <T> List<T> query(Class<T> clazz, String sql, Object... args) {
//	 * 		。。。
//	 * 		while(resultSet.next()) {
//				T ele = clazz.newInstance();
//				
//				for (String columnLabel : headers) {
//					//3.2、通过 列名，从  resultSet 中获取 列值
//					Object columnValue = resultSet.getObject(columnLabel);
//					//System.out.println(columnLabel + ": " + columnValue);
//					
//					//3.3、通过 反射，为 javaBean 对象设置属性值
//					//ReflectionUtils.setFieldValue(ele, columnLabel, columnValue);
//					BeanUtils.setProperty(ele, columnLabel, columnValue);
//				}
//				
//				eleList.add(ele);
//			}
//			
//			。。。
//		}
//	 * 
//	 */
//
//}
